package com.nas.crocus.service.impl;

import java.util.Collection;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.nas.crocus.dao.HotelDao;
import com.nas.crocus.domain.Evento;
import com.nas.crocus.domain.Hotel;
import com.nas.crocus.exception.EntidadNoUnicaException;
import com.nas.crocus.service.HotelService;

@Service
@Transactional
public class HotelServiceImpl implements HotelService {

    @Autowired
    private HotelDao hotelDao;
    
    @Override
    public Collection <Hotel> buscar() {
        return hotelDao.buscar();
    }

    @Override
    public Hotel buscar(Long hotelId) {
  
        return hotelDao.buscar(hotelId);
    }
    
    @Override
    public Hotel buscarPorNombre(String nombre) {
        return hotelDao.buscarPorNombre(nombre);
    }
    

    @Override
    public void guardar(Hotel hotel) throws EntidadNoUnicaException {
        Hotel hotelRegistrado = hotelDao.buscarPorNombre(hotel.getNombre());
        if (hotelRegistrado != null){
           throw new  EntidadNoUnicaException("El hote ["+hotel.getNombre()+"] ya existe");            
        }
        hotelDao.guardar(hotel);
    }

    @Override
    public void actualizar(Hotel hotel) throws EntidadNoUnicaException {
        Hotel hotelRegistrado = hotelDao.buscarPorNombre(hotel.getNombre());
        if ((hotelRegistrado != null) && (hotelRegistrado.getId().longValue() != hotel.getId().longValue())) {
            throw new  EntidadNoUnicaException("El hote ["+hotel.getNombre()+"] ya existe");  
        }
        hotelDao.actualizar(hotel);
    }

}
